<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //下面到代码由于用let声明，它是块级作用域，所以会输出1,2

      // let x = 1
      // if (x == 1) {
      //   var x = 2
      //   console.log(x)
      // }
      // console.log(x)
      //总原则：以后都不要用var
      //都是var时，没有块级作用域
      // var x = 1
      // if (x == 1) {
      //   var x = 2
      //   console.log(x)
      // }
      // console.log(x)
      //let不会提升,会报错，let要先声明才能使用
      //console.log执行时，js解析直到有a这个变量，但是js解析器把其放在暂时性死区(TDA)里面
      // console.log(a)
      // let a = 200

      //不会成为顶级对象
      //出现同名的属性，不会覆盖，但会报错，说已经声明，不能重复声明
      let a = 200
      let a = 300
      //console.log(window.a)
    </script>
  </body>
</html>
